<script>
  //封装简易版ajax
  function ajax(option) {
    let xhr = new XMLHttpRequest();
    //解构option
    let { url, method = "get", success } = option;
    xhr.open(method, url);
    xhr.send(null);
    xhr.onload = function () {
      success(JSON.parse(this.responseText));
    };
  }

  //   一个基本的构造函数
  // promise是个构造函数，可以实例化，这个构造函数中可以接收一个函数，函数中有两个形参，一个是resolve，一个是reject

  // 基本链式有.then .catch
  // 调用resolve 就可以立案时调用 .then =>成功
  // 调用reject 就可以链式调用 .catch =>失败
  let p = new Promise((resolve, reject) => {
    //在promise的回调函数中调用了ajax
    // 并且调用resolve，传入实参，实参就是请求结果
    ajax({
      url: "http://chst.vip/data/index.json",
      success(res) {
        //   console.log(res);
        resolve(res.data);
      },
    });
  });
  p.then((res) => {
    //链式调用的方法中也要传递函数
    console.log(res);
  });
</script>
